package com.mdd.admin.service;

import com.mdd.admin.validate.commons.PageValidate;
import com.mdd.admin.validate.competition.CompetitionApplyCreateValidate;
import com.mdd.admin.validate.competition.CompetitionApplyImportValidate;
import com.mdd.admin.validate.competition.CompetitionApplySearchValidate;
import com.mdd.admin.validate.competition.CompetitionApplyUpdateValidate;
import com.mdd.admin.validate.member.MemberApplyValidate;
import com.mdd.admin.validate.member.MemberExamineValicate;
import com.mdd.admin.vo.competition.*;
import com.mdd.common.core.PageResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 赛事申请服务接口类
 * @author LikeAdmin
 */
public interface ICompetitionApplyService {

    /**
     * 赛事申请列表
     *
     * @author LikeAdmin
     * @param pageValidate 分页参数
     * @param searchValidate 搜索参数
     * @return PageResult<CompetitionApplyListedVo>
     */
    PageResult<CompetitionApplyListedVo> list(PageValidate pageValidate, CompetitionApplySearchValidate searchValidate);

    /**
     * 赛事申请详情
     *
     * @author LikeAdmin
     * @param id 主键ID
     * @return CompetitionApplyDetailVo
     */
    CompetitionApplyDetailVo detail(Integer id);

    /**
     * 赛事申请新增
     *
     * @author LikeAdmin
     * @param createValidate 参数
     */
    void add(CompetitionApplyCreateValidate createValidate);

    /**
     * 赛事申请编辑
     *
     * @author LikeAdmin
     * @param updateValidate 参数
     */
    void edit(CompetitionApplyUpdateValidate updateValidate);

    /**
     * 赛事申请删除
     *
     * @author LikeAdmin
     * @param id 主键ID
     */
    void del(Integer id);


    void downloadImportTemplate(HttpServletResponse response) throws IOException;

    CompetitionApplyImportParseVo parseImport(MultipartFile file);

    CompetitionApplyImportVo importUser(CompetitionApplyImportValidate req);

    void signUp(MemberApplyValidate memberApplyValidate);

    CompetitionApplyTeamVo team(String teamNo);

    void memberExamine(MemberExamineValicate valicate);
}
